package wei.xinya.core.multiThread;

public class MultiThread {
    public static void main(String[] args) {
        for (int i = 0; i < 100; i++) {
            new Station(String.valueOf(i)).start();
        }
        //实例化站台对象，并为每一个站台取名字
//        Station station1 = new Station("窗口1");
//        Station station2 = new Station("窗口2");
//        Station station3 = new Station("窗口3");

        // 让每一个站台对象各自开始工作
//        station1.start();
//        station2.start();
//        station3.start();
    }
}

class Station extends Thread {
    // 通过构造方法给线程名字赋值
    public Station(String name) {
        // 给线程名字赋值
        super(name);
    }

    private static final int count = 10000;

    // 为了保持票数的一致，票数要静态
    static int tick = count;
    // 创建一个静态钥匙，值是任意的
    static final Object ob = "key";

    @Override
    public void run() {
        while (tick > 0) {
            // 这个很重要，必须使用一个锁
            synchronized (ob) {
                // 进去的人会把钥匙拿在手上，出来后才把钥匙拿让出来
                if (tick > 0) {
                    System.out.println("卖出了第" + (count - tick + 1) + "张票");
                    tick--;
                } else {
                    System.out.println("票卖完了");
                }
            }
            try {
                Thread.sleep(10);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}